/**
 * 作者: 会写BUG
 * 创作日期: 2025/3/21 10:22
 * 描述: cwbQtPractice.NumberChess
 *
 **/
#pragma once

#include <qpropertyanimation.h>
#include <QWidget>
#include <QRandomGenerator>

class NumberChess
  : public QWidget
{
    friend class ChessPanel;
    Q_OBJECT

public:
  explicit NumberChess(QWidget* _parent, const QRect & _rect);
  ~NumberChess() override;

  /* 需要增加 */
  void setNeedAdd(bool _need_add);
  /* 获取添加状态 */
  bool needAdd() const;
  /* 获取当前数值 */
  int number() const;
  /* 设置当前索引 */
  void setIndex(int _index);
  /* 获取当前索引 */
  int index() const;
  /* 移动数字到指定位置 */
  QPropertyAnimation* moveTo(const QRect & _rect);
  /* 移动后是否需要删除 */
  bool needDelete() const;
  /* 设置是否需要删除 */
  void setNeedDelete(bool _need_delete);

protected:
  void paintEvent(QPaintEvent* event) override;

private:
  /* 初始化数字快的背景色 */
  void initChess();
  /* 设置数字 */
  void setNumber(int _number);

private:
  int                   number_ = -1;
  int                   index_ = -1;
  QMap<int, QColor>     color_map_ = {};
  bool                  need_delete_ = false;
  bool                  need_add_ = false;
};
